Skip to main content

CODESYS Math Libraries

はじめに

CODESYS Math Libraries には以下が含まれます マトリックス ライブラリと内部 浮動小数点ツール ライブラリ。ザ・ Matrix ライブラリは任意の次元の行列とその行列に対する基本的な数学演算をサポートします。次の演算がサポートされています:加算、乗算、線形方程式の求解、反転、行列式の計算です

商品説明

ザル Matrix ライブラリには、任意の次元の行列を定義するデータ型と、行列に対して基本的な操作を実行する関数が用意されています。

データ型と関数

マトリックスは以下で定義されます。 mtx.Matrix データタイプ。ザ・ mtx.Matrix データ型は行列を次のように保存します。 ARRAYLREAL。配列は行優先形式です

基本的な数学演算は、次のように 3 つの行列をもつ関数として提供されます。 VAR_IN_OUT 引数:結果、ソース、ターゲット。たとえば、行列加算用の関数には次のインターフェースがあります

(* Adds two matrices : C := A + B. 
* A, B, and C must have identical dimensions.
* Note: A, B, and C may all be the same matrix. *)
FUNCTION AddM : ResultCode
VAR_IN_OUT
   C : Matrix ; (* The result *)
   A : Matrix ; (* The first summand *)
   B : Matrix ; (* The second summand *)
END_VAR

ライブラリには以下の数学演算が用意されています。

  • 行列の加算 (要素単位): AddM

  • 行列の減算 (要素単位): SubM

  • 行列の乗算 (要素単位): TimesM

  • 行列の除算 (要素単位): RDivideM

  • 行列のスカラー乗算: MultMS

  • 行列の乗算: MultM

  • マトリックスの転置: TransposeM

また、行列の初期化、コピー、要素へのアクセスを行うための補助関数もいくつかあります。

  • でマトリックスを初期化します ARRAY 値の: InitMatrix

  • [コピー] ARRAY マトリックスへの要素: CopyElems

  • 同じ次元の行列をコピー: CopyMatrix

  • 単位行列として初期化: IdentityMatrix

  • ゼロ行列として初期化: ZeroMatrix

  • 要素の読み取りと書き込み: ElemSetElem

より複雑な操作も提供されています。

  • 線形方程式を解く A * X = B: SolveLU

  • 二次行列を反転: InvertLU

  • 二次行列の行列式の計算: DeterminantLU

  • を決定する LU 分解 (この分解は上記の 3 つの機能の基礎となります): DecomposeLU

メモリー管理

ユーザーはメモリ管理を担当します。マトリックスはメモリへのポインタで初期化されます (経由 InitMatrix 関数)。場合によっては、ユーザが適切なメモリを用意できることもあります。さらに、補助機能はブロックします MatrixSColVectorS、および RowVectorS 一定サイズの配列で行列を初期化するために使用できます。これらは以下を実装しています。 IMatrixAllocator ユーザーも利用できるインターフェイス。